package xyz.icxl.kotlion.ext.context

import android.content.ContextWrapper
import android.content.pm.PackageManager
import android.os.Build
import androidx.annotation.StringRes
import androidx.core.content.ContextCompat

/**
 * 文件描述：上下文扩展
 *
 * 文件创建人：cxl
 *
 * 创建时间：2021 年 11月 22 日
 *
 * 文件版本：v1.0
 *
 * 版本描述：创建文件
 */


/**
 * 懒加载字符串
 * @param resId 字符串的资源id
 * @return 与资源关联的字符串数据，剥离了样式化的文本信息。
 */
fun ContextWrapper?.getStringLazy(@StringRes resId: Int): Lazy<String> {
    return lazy { this?.getString(resId) ?: "" }
}


/**
 * Returns a localized formatted string from the application's package's
 * default string table, substituting the format arguments as defined in
 * [java.util.Formatter] and [java.lang.String#format].
 *
 * @param resId Resource id for the format string
 * @param formatArgs The format arguments that will be used for
 *                   substitution.
 * @return The string data associated with the resource, formatted and
 *         stripped of styled text information.
 */
fun ContextWrapper?.getStringLazy(@StringRes resId: Int, formatArgs: Array<Any>): Lazy<String> {
    return lazy { this?.getString(resId, formatArgs) ?: "" }
}

/**
 * 检查 是否已获取[permission]权限
 * 返回true 已获取该权限
 * 返回false 未获取该权限
 */
fun ContextWrapper.hasPermission(permission: String): Boolean {
    if(Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return true
    return ContextCompat.checkSelfPermission(this, permission) ==
            PackageManager.PERMISSION_GRANTED
}

/**
 * 检查是否已获取一组权限
 * 返回true 已获取该权限
 * 返回false 未获取该权限
 */
fun ContextWrapper.hasPermissions(permissions: Array<String>):Boolean{
    if(Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return true
    permissions.forEach { permission->
        if (ContextCompat.checkSelfPermission(this, permission) !=
            PackageManager.PERMISSION_GRANTED){
            return false
        }
    }
    return true
}